package tp.pr5.mv.command;

import tp.pr5.mv.CPU;
import tp.pr5.mv.Memory;
import tp.pr5.mv.OperandStack;
import tp.pr5.mv.ProgramCounter;

public class RUN extends Command {

	
	public boolean executeCommand(Memory mem, OperandStack stack, ProgramCounter pc, CPU cpu) {
		
		
		boolean ok = true;
		STEP step = new STEP(); // Creamos un comando step que irá ejecutando instrucciones
		
		while ( ok && !cpu.isHalted() ) { // Realiza todos los STEP posibles hasta llegar al final del programa (pc = numero de instrucciones del programa + 1)
			
			ok = step.executeCommand(mem, stack, pc, cpu);
		}
		
		return ok;
	}
	
	public Command parse(String line) {
		
		if ( line.equalsIgnoreCase( "run" ) ) return new RUN (); // Parseamos si el comando introducido es run
		else return null;
	}
	
	
	
	
}
